package logger

import (
	"runtime"
	"strings"

	"gitee.com/night-tc/gobige/common"
)

// logData 表示日志数据结构。
type logData struct {
	data  string   // 日志内容
	level logLevel // 日志等级
}

// loggerTrace 生成调用堆栈信息。
// 参数:
//
//	skip: 跳过的堆栈层数。
//
// 返回值:
//
//	string: 调用堆栈信息。
func loggerTrace(skip int) string {
	ret := common.NewStringBuilder()
	ret.Append("\n\t\t[loggerTrace]:\n")
	for i := 0; i < 30; i++ {
		pc, file, line, ok := runtime.Caller(i + skip)
		if !ok {
			break
		}
		ret.Append("\t\t")
		ret.AppendInt(i)
		ret.Append(". ")
		ret.Append(runtime.FuncForPC(pc).Name())
		ret.Append("() ")
		ret.Append(file)
		ret.Append(":")
		ret.AppendInt(line)
		ret.Append("\n")
	}
	return ret.ToString()
}

// getFormat 根据参数数量生成格式化字符串。
// 参数:
//
//	size: 参数数量。
//
// 返回值:
//
//	string: 格式化字符串。
func getFormat(size int) string {
	format := strings.Repeat("%v ", size)
	if len(format) > 0 {
		format = format[:len(format)-1] //去掉最后一个空格
	}
	return format
}
